#ifndef INSTRUCTION_H
#define INSTRUCTION_H

#include <GL/gl.h>
#include <stdio.h>

class Instruction
{
    /*This class represents the possible instructions (plot or affine transformations) for drawing a SweepPolyhedra. A better solution
    is to model a class for each type of instruction but the manipulation of polymorphic containeres is a little weird in C++. Hence a
    single class is choosed to model all the instructions to simplificate the code.*/

public:
    int type;
    static const int PLOTING = 0 , ROTATION = 1 , SCALING = 2 , TRANSLATION = 3 , GENERIC_TRANSFORMATION = 4;
    double angle , coords[3];
    double transform[16];

    Instruction();
    Instruction(int type , double *coords = 0 , double angle = 0.0 , double *transform = 0);

    void execute();
    void show();
};

#endif // INSTRUCTION_H
